package com.yelink.metrics.core.constant.annotations;

import com.yelink.metrics.core.constant.ModelType;
import com.yelink.metrics.core.constant.enums.FrequencyUnit;
import com.yelink.metrics.core.constant.enums.InnerModelType;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 表额外信息
 * @author idea
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MetricsInfo {

    /**
     * 字段中文名
     */
    String comment() default "";


    /**
     * 指定枚举类型
     */
    Class<? extends ModelType> modelEnum() default InnerModelType.class;

    /**
     * 指定值在 modelEnum 枚举中的 code, 填错会导致对应指标的初始化失败
     */
    String modelCode() default "customTarget";

    /**
     * 定时任务的默认频率单位
     */
    FrequencyUnit defaultFrequencyUnit() default FrequencyUnit.MINUTE;
    /**
     * 定时任务的默认频率值
     */
    int defaultFrequency() default 15;

    /**
     * <p>自定义uniCode </p>
     * 由{@link MetricsColumn} 构建  --> 由{@link MetricsUniCode} 构建
     */
    boolean diyUniCode() default false;
}